package cn.kone.remote.fallback;

import cn.kone.remote.api.UaaFeignApi;
import cn.kone.remote.dto.param.LoginDto;
import cn.kone.result.JSONResult;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;

/**
 * 实现 FallbackFactory 接口，用于创建 UaaFeignApi 的降级实例
 * @Component 声明为 Spring 组件，使得该类能够被 Spring 容器管理
 */
@Component
public class UaaFeignApiFallback implements FallbackFactory<UaaFeignApi> {
    @Override
    // 当 Feign 调用失败时，create 方法会被调用，返回一个 UaaFeignApi 的降级实例
    public UaaFeignApi create(Throwable cause) {
        return new UaaFeignApi() {
            // 重写 saveLogin 方法，在调用失败时打印异常信息，并返回一个包含错误提示的 JSONResult 对象
            @Override
            public JSONResult saveLogin(LoginDto loginDto) {
                // 打印异常堆栈信息，方便排查问题
                cause.printStackTrace();
                // 返回一个带有错误提示的 JSONResult 对象，告知用户网络繁忙，请稍后再试
                return JSONResult.error("网络繁忙请稍后再试..");
            }
        };
    }
}
